﻿using System;
using System.Collections.Generic;
using FluorineFx;
using Neturion.Dados;
using Neturion.Fachadas;

namespace Neturion.Servicos
{
    [RemotingService]
    public class ServicoOrgaoExpedidor
    {
        public OrgaoExpedidor Inserir(OrgaoExpedidor orgaoExpedidor, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Inserir(orgaoExpedidor, usuarioPermissao);
        }

        public OrgaoExpedidor Atualizar(OrgaoExpedidor orgaoExpedidor, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Atualizar(orgaoExpedidor, usuarioPermissao);
        }

        public void Excluir(OrgaoExpedidor orgaoExpedidor, Usuario usuarioPermissao)
        {
            Fachada.GetInstancia().Excluir(orgaoExpedidor, usuarioPermissao);
        }

        public OrgaoExpedidor ObterOrgaoExpedidorPorId(int id, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterOrgaoExpedidorPorId(id, usuarioPermissao);
        }

        public IList<OrgaoExpedidor> ObterTodosOrgaoExpedidores(Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosOrgaoExpedidors(usuarioPermissao);
        }

        public IList<OrgaoExpedidor> ObterTodosOrgaosExpedidores(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao,
          string codigo, string sigla, string descricao, DateTime? inicioVigenciaDe, DateTime? inicioVigenciaAte, DateTime? fimVigenciaDe,
          DateTime? fimVigenciaAte)
        {
            return Fachada.GetInstancia().ObterTodosOrgaosExpedidores(inicio, quantidade, quantidadeMinima, usuarioPermissao, codigo, sigla,
                descricao, inicioVigenciaDe, inicioVigenciaAte, fimVigenciaDe, fimVigenciaAte);
        }

        public OrgaoExpedidor ObterOrgaoExpedidorPorCodigo(Usuario usuario, string codigo)
        {
            return Fachada.GetInstancia().ObterOrgaoExpedidorPorCodigo(usuario, codigo);
        }
        
        public OrgaoExpedidor ObterOrgaoExpedidorPorSigla(Usuario usuario, string sigla)
        {
            return Fachada.GetInstancia().ObterOrgaoExpedidorPorSigla(usuario, sigla);
        }

        public IList<OrgaoExpedidor> ObterOrgaoExpedidorPorDescricao(int inicio, int quantidade, int quantidadeMinima, Usuario usuario, string descricao)
        {
            return Fachada.GetInstancia().ObterOrgaoExpedidorPorDescricao(inicio,  quantidade,  quantidadeMinima, usuario, descricao);
        }
    }
}